// 导入router所需的方法
import { createRouter, createWebHistory } from 'vue-router'

// 导入路由页面的配置
import routes from './routes'
import { message } from 'ant-design-vue'

// 路由参数配置
const router = createRouter({
    // 使用hash(createWebHashHistory)模式，(createWebHistory是HTML5历史模式，支持SEO)
    history: createWebHistory(),
    routes: routes,
})

const userInfo = JSON.parse(sessionStorage.getItem('userInfo') || '{}')

// 定义白名单路由
const whiteList = ['/login', '/wait']

// 全局前置守卫，这里可以加入用户登录判断
router.beforeEach((to, from, next) => {
    const token = sessionStorage.getItem('token')

    // 如果是白名单页面，直接放行
    if (whiteList.includes(to.path)) {
        if (to.path === '/login' && token) {
            // 如果已登录且要去登录页，根据角色重定向
            if (userInfo.auth === 'user') {
                next('/video')
            }else{
                next('/')
            }
        } else {
            next()
        }
        return
    }
    
    // 其他页面需要验证token
    if (!token) {
        next('/login')
        message.error('请先登录！')
    } else {
        next()
    }
})

// 全局后置钩子，这里可以加入改变页面标题等操作
router.afterEach((to, from) => {
    const _title = to.meta.title as string | undefined
    if (_title) {
        window.document.title = _title
    }
})

// 导出默认值
export default router
